/*
Copyright 2010  Murali Devi (profdevi@gmail.com)

This file is part of ComineGL Project.

ComineGL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

ComineGL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with ComineGL.  If not, see <http://www.gnu.org/licenses/>.

This code uses the irrlicht and irrklang libraries.  Please read
the libraries copyrights at 

	irrlicht library:  http://irrlicht.sourceforge.net
	irrklang library:  http://www.ambiera.com/irrklang

*/



//v0.14 copyright Comine.com 20101212U01
#ifndef ComineGLMaterial_h
#define ComineGLMaterial_h

////////////////////////////////////////
#include "ComineGLDefines.h"

///////////////////////////////////////////////////////
// Material Options have same constant values
// as the irrlicht game engine. (see irrlicht.sourceforge.net)
enum CGLMaterialFlagsEnum
	{
	CGLMF_WIREFRAME = 0x1,
	CGLMF_POINTCLOUD = 0x2,
	CGLMF_GOURAUD_SHADING = 0x4,
	CGLMF_LIGHTING = 0x8,
	CGLMF_ZBUFFER = 0x10,
	CGLMF_ZWRITE_ENABLE = 0x20,
	CGLMF_BACK_FACE_CULLING = 0x40,
	CGLMF_FRONT_FACE_CULLING = 0x80,
	CGLMF_BILINEAR_FILTER = 0x100,
	CGLMF_TRILINEAR_FILTER = 0x200,
	CGLMF_ANISOTROPIC_FILTER = 0x400,
	CGLMF_FOG_ENABLE = 0x800,
	CGLMF_NORMALIZE_NORMALS = 0x1000,
	CGLMF_TEXTURE_WRAP = 0x2000,
	CGLMF_ANTI_ALIASING = 0x4000,
	CGLMF_COLOR_MASK = 0x8000,
	CGLMF_COLOR_MATERIAL = 0x10000
	};


///////////////////////////////////////////////////////
// Material Options have same constant values
// as the irrlicht game engine. (see irrlicht.sourceforge.net)
enum CGLMaterialTypeEnum
	{
	CGLMT_SOLID = 0,
	CGLMT_SOLID_2_LAYER,
	CGLMT_LIGHTMAP,
	CGLMT_LIGHTMAP_ADD,
	CGLMT_LIGHTMAP_M2,
	CGLMT_LIGHTMAP_M4,
	CGLMT_LIGHTMAP_LIGHTING,
	CGLMT_LIGHTMAP_LIGHTING_M2,
	CGLMT_LIGHTMAP_LIGHTING_M4,
	CGLMT_DETAIL_MAP,
	CGLMT_SPHERE_MAP,
	CGLMT_REFLECTION_2_LAYER,
	CGLMT_TRANSPARENT_ADD_COLOR,
	CGLMT_TRANSPARENT_ALPHA_CHANNEL,
	CGLMT_TRANSPARENT_ALPHA_CHANNEL_REF,
	CGLMT_TRANSPARENT_VERTEX_ALPHA,
	CGLMT_TRANSPARENT_REFLECTION_2_LAYER,
	CGLMT_NORMAL_MAP_SOLID,
	CGLMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR,
	CGLMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA,
	CGLMT_PARALLAX_MAP_SOLID,
	CGLMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR,
	CGLMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA,
	CGLMT_ONETEXTURE_BLEND
	};


//////////////////////////////////////////////////////
// Set Material Functions
MDLLFUN bool CGLMaterialFlag(enum CGLMaterialFlagsEnum flags,int nodeid,bool enable);
MDLLFUN bool CGLMaterialType(enum CGLMaterialTypeEnum types,int nodeid);

#endif //ComineGLMaterial_h